package com.junxonline.instant.admin.service.device;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.junxonline.instant.dao.entity.dto.ui.TreeSelectNodeDTO;
import com.junxonline.instant.dao.entity.model.device.Group;
import com.junxonline.instant.dao.entity.vo.device.GroupVO;
import com.junxonline.instant.dao.entity.vo.device.TerminalVO;
import com.junxonline.instant.common.entity.common.CommonReqPage;
import com.junxonline.instant.common.entity.common.CommonRespPage;

import java.util.List;

/**
 * 终端分组管理接口
 *
 * @author JunX
 * @date 2021-09-29
 */
public interface GroupService extends IService<Group> {

    /**
     * 查询终端分组下拉列表（TreeSelect）
     *

     * @param wrapper 条件查询器
     * @return List<TreeSelectNodeDTO>
     */
    List<TreeSelectNodeDTO> queryGroupTreeSelect(QueryWrapper<Group> wrapper);

    /**
     * 查询终端分组树（TreeSelect）
     *
     * @param vo 请求参数
     * @return List<TreeSelectNodeDTO>
     */
    List<TreeSelectNodeDTO> queryGroupTree(TerminalVO vo);

    /**
     * 查询上级分组树（TreeSelect）
     *
     * @param vo 请求参数
     * @return List<TreeSelectNodeDTO>
     */
    List<TreeSelectNodeDTO> queryParentTree(GroupVO vo);

    /**
     * 查询终端分组列表
     *
     * @param vo      请求参数
     * @param wrapper 条件查询器
     * @return List<Group>
     */
    CommonRespPage<Group> queryList(CommonReqPage<GroupVO> vo, QueryWrapper<Group> wrapper);

    /**
     * 查询终端分组
     *
     * @param id ID
     * @return Group
     */
    Group query(Long id);

    /**
     * 新增终端分组
     *
     * @param group 请求参数
     */
    void add(Group group);

    /**
     * 编辑终端分组
     *
     * @param group 请求参数
     */
    void edit(Group group);

    /**
     * 删除终端分组
     *
     * @param ids 请求参数
     */
    void delete(List<Long> ids);

}
